unit PessoaRecorFr;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ComCtrls, DBCtrls, ActnList, Buttons, ACBrValidador, MainRecordFr;

type

  { TPessoaRecorFrame }

  TPessoaRecorFrame = class(TMainRecordFrame)
    ACBrValidador: TACBrValidador;
    CancelarPessoaAction: TAction;
    id_pessoa: TDBEdit;
    SalvarPessoaAction: TAction;
    AlterarPessoaAction: TAction;
    ExcluirPessoaAction: TAction;
    InserirPessoaAction: TAction;
    PessoaActionList: TActionList;
    BuscarCidade: TBitBtn;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    DBEdit13: TDBEdit;
    DBEdit14: TDBEdit;
    cpfEdit: TDBEdit;
    DBEdit16: TDBEdit;
    DBEdit17: TDBEdit;
    DBEdit18: TDBEdit;
    cnpjEdit: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit20: TDBEdit;
    DBEdit21: TDBEdit;
    DBEdit22: TDBEdit;
    nome_pessoa: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    id_cidade: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    notas: TDBMemo;
    tipo: TDBRadioGroup;
    PessoaGroupBox: TGroupBox;
    Label1: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label2: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    PrincipalPageControl: TPageControl;
    GeralTabSheet: TTabSheet;
    FisicaTabSheet: TTabSheet;
    JuridicaTabSheet: TTabSheet;
    ToolBar1: TToolBar;
    ToolBar2: TToolBar;
    ExcluirPessoaJuridica: TToolButton;
    AlterarPessoaJuridica: TToolButton;
    GravarPessoaJuridica: TToolButton;
    CancelarPessoaJuridica: TToolButton;
    IncluirPessoaFisica: TToolButton;
    ExcluirPessoaFisica: TToolButton;
    AlterarPessoaFisica: TToolButton;
    GravarPessoaFisica: TToolButton;
    ToolButton17: TToolButton;
    ToolButton18: TToolButton;
    ToolButton19: TToolButton;
    ToolButton20: TToolButton;
    ToolButton21: TToolButton;
    ToolButton22: TToolButton;
    ToolButton3: TToolButton;
    IncluirPessoaJuridica: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    CancelarPessoaFisica: TToolButton;
    ToolButton9: TToolButton;
    procedure AlterarPessoaActionExecute(Sender: TObject);
    procedure BuscarCidadeClick(Sender: TObject);
    procedure CancelarPessoaActionExecute(Sender: TObject);
    //procedure tipoChange(Sender: TObject);
    procedure ExcluirPessoaActionExecute(Sender: TObject);
    procedure SalvarPessoaActionExecute(Sender: TObject);
    procedure InserirPessoaActionExecute(Sender: TObject);
    procedure ControlaBotoes; override;
    procedure ControlaBotoesPessoa(habilita: boolean);
    constructor Create(TheOwner: TComponent); override;

  private
    { private declarations }
  public
    { public declarations }
  end;

implementation

uses PessoaDM, Initializator, MainFr, MainDM, RelatorioDM;

{ TPessoaRecorFrame }

procedure TPessoaRecorFrame.ExcluirPessoaActionExecute(Sender: TObject);
begin
  if MessageDlg('Confirmação', 'Deseja excluir o registro atual?',
    mtConfirmation, mbYesNo, 0) = mrYes then
    if PrincipalPageControl.ActivePage = FisicaTabSheet then begin
      PessoaData.TipoPessoaExcluir('F');
    end else if PrincipalPageControl.ActivePage = JuridicaTabSheet then begin
      PessoaData.TipoPessoaExcluir('J');
    end;

end;

procedure TPessoaRecorFrame.SalvarPessoaActionExecute(Sender: TObject);
begin
  ACBrValidador.Documento := cpfEdit.Text;
  if PrincipalPageControl.ActivePage = FisicaTabSheet then begin
    ACBrValidador.Documento := cpfEdit.Text;
    if ACBrValidador.Validar then begin
      PessoaData.TipoPessoaSalvar('F');
      ControlaBotoesPessoa(True);
    end else begin
      ShowMessage('CPF inválido!');
    end;
  end else if PrincipalPageControl.ActivePage = JuridicaTabSheet then begin
    ACBrValidador.Documento := cnpjEdit.Text;
    if ACBrValidador.Validar then begin
      PessoaData.TipoPessoaSalvar('J');
      ControlaBotoesPessoa(True);
    end else begin
      ShowMessage('CNPJ inválido!');
    end;
  end;
end;


procedure TPessoaRecorFrame.AlterarPessoaActionExecute(Sender: TObject);
begin
  if PrincipalPageControl.ActivePage = FisicaTabSheet then begin
    PessoaData.TipoPessoaAlterar('F');
    ControlaBotoesPessoa(False);
  end else if PrincipalPageControl.ActivePage = JuridicaTabSheet then begin
    PessoaData.TipoPessoaAlterar('J');
    ControlaBotoesPessoa(False);
  end;

end;

procedure TPessoaRecorFrame.BuscarCidadeClick(Sender: TObject);
begin
  TheControl.ShowForeignFrame(TMainFrame(CidadeSearchFrame));
end;


procedure TPessoaRecorFrame.CancelarPessoaActionExecute(Sender: TObject);
begin
  if PrincipalPageControl.ActivePage = FisicaTabSheet then begin
    PessoaData.TipoPessoaCancel('F');
    ControlaBotoesPessoa(True);
  end else if PrincipalPageControl.ActivePage = JuridicaTabSheet then begin
    PessoaData.TipoPessoaCancel('J');
    ControlaBotoesPessoa(True);
  end;

end;

procedure TPessoaRecorFrame.InserirPessoaActionExecute(Sender: TObject);
begin
  if PrincipalPageControl.ActivePage = FisicaTabSheet then begin
    PessoaData.TipoPessoaIncluir('F');
    ControlaBotoesPessoa(False);
  end else if PrincipalPageControl.ActivePage = JuridicaTabSheet then begin
    PessoaData.TipoPessoaIncluir('J');
    ControlaBotoesPessoa(False);
  end;
end;

procedure TPessoaRecorFrame.ControlaBotoes;
var
  i: integer;
begin
  inherited ControlaBotoes;
  //PessoaGroupBox.Enabled := True;
  //if MainDataModule.DataSetState() = mdsEditing then begin
  FisicaTabSheet.Enabled := AlterarAction.Enabled;
  JuridicaTabSheet.Enabled := AlterarAction.Enabled;
  InserirPessoaAction.Enabled := AlterarAction.Enabled;
  ExcluirPessoaAction.Enabled := AlterarAction.Enabled;
  AlterarPessoaAction.Enabled := AlterarAction.Enabled;

  for i := 0 to PessoaActionList.ActionCount - 1 do begin
    TAction(PessoaActionList.Actions[i]).Enabled := AlterarAction.Enabled;
  end;

  {end else begin
    FisicaTabSheet.Enabled := False;
    JuridicaTabSheet.Enabled := False;
    for i := 0 to PessoaActionList.ActionCount - 1 do begin
      TAction(PessoaActionList.Actions[i]).Enabled := False;
    end;
  end;}
end;

procedure TPessoaRecorFrame.ControlaBotoesPessoa(habilita: boolean);
var
  i: integer;
begin
  SalvarPessoaAction.Enabled := not habilita;
  CancelarPessoaAction.Enabled := not habilita;
  InserirPessoaAction.Enabled := habilita;
  AlterarPessoaAction.Enabled := habilita;
  ExcluirPessoaAction.Enabled := habilita;

  for i := 0 to RecordActionList.ActionCount - 1 do begin
    TAction(RecordActionList.Actions[i]).Enabled := habilita;
  end;


end;

constructor TPessoaRecorFrame.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  PrincipalPageControl.ActivePage := GeralTabSheet;
end;


initialization
  {$I pessoarecorfr.lrs}

end.
